package nutella89.basic;

import java.util.Scanner;

public class J08_Array {

	public static void main(String[] args) {
		// 배열 array
		// 동일한 종류의 여러 개의 값들을 
		// 저장할 수 있는 자료구조
		// 배열에 저장되는 내용을 요소element라 하고
		// 각 요소는 위치값index을 이용해서
		// 접근할 수 있음
		// 위치값은 0부터 시작함
		
		// 배열 변수 선언
		int numbers[];		// 정수형 배열
		double taxes[];		// 실수형 배열
		char names[];		// 문자 배열
		
		// 배열 생성
		numbers = new int[10];	// 10개의 정수저장
		taxes = new double[10];	// 10개의 실수저장
		names = new char[10];	// 10개의 문자저장
		
		System.out.println( numbers );		
		System.out.println( taxes );		
		System.out.println( names );		
		
		System.out.println( numbers[0] );
		System.out.println( numbers[1] );
		System.out.println( numbers[9] );
				
		names[0] = '수'; 
		names[1] = '지'; 
		names[2] = '!';
		System.out.println( names );
		System.out.println( names[0] );
		System.out.println( names[1] );
		System.out.println( names[2] );
		System.out.println( "" + names );
		
		// numbers에 1 ~ 10까지 값 저장
		numbers[0] = 1;
		numbers[1] = 2;
		numbers[2] = 3;
		numbers[3] = 4;
		numbers[4] = 5;
		numbers[5] = 6;
		numbers[6] = 7;
		numbers[7] = 8;
		numbers[8] = 9;
		numbers[9] = 10;
		
		System.out.println( numbers[0] );
		System.out.println( numbers[2] );
		System.out.println( numbers[4] );
		System.out.println( numbers[6] );
		System.out.println( numbers[8] );
		
		// 반복문을 이용한 배열 처리
		for(int i = 0; i < 10; ++i) {
			numbers[i] = i+1;
		}
		for(int i = 1; i <= 10; ++i) {
			numbers[i-1] = i;
		}
		
		// 키보드로 입력받은 정수 5개를 그대로 출력
		Scanner sc = new Scanner(System.in);
		System.out.println( "정수 5개를 입력하세요" );
		/*int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int num3 = sc.nextInt();
		int num4 = sc.nextInt();
		int num5 = sc.nextInt();*/
		// 각 코드에 공통요소가 없기 때문에
		// 반복문으로 변경 불가!
		int nums[] = new int[5];
		/*nums[0] = sc.nextInt();
		nums[1] = sc.nextInt();
		nums[2] = sc.nextInt();
		nums[3] = sc.nextInt();
		nums[4] = sc.nextInt();*/
		// 각 코드에 공통요소가 있으므로
		// 반복문으로 변경 가능!
		for(int i = 0; i <= 4; ++i) {
			nums[i] = sc.nextInt();
		}
		// 배열에 저장된 값을 출력하기
		/*System.out.println( nums[0] );
		System.out.println( nums[1] );
		System.out.println( nums[2] );
		System.out.println( nums[3] );
		System.out.println( nums[4] );*/
		// 각 코드에 공통요소가 있으므로
		// 반복문으로 변경 가능!
		for(int i = 0; i <= 4; ++i) {
			System.out.println( nums[i] );
		}
		// 배열을 각 요소를 단순히 순차적으로 
		// 처리할 목적이면 for-each문을 사용하는 것이 좋음
		for( int j : nums ) {
			System.out.println( j );
		}
		
		// 배열의 크기 알아내기 : 배열이름.length
		System.out.println( nums.length );
		System.out.println( numbers.length );
		
		// 배열사용시 볼 수 있는 오류
		double vals[] = new double[100];
		vals[0] = 100.0;
		// vals[100] = 100.0;
		// ArrayIndexOutOfBoundsException 발생
		vals[0] = sc.nextDouble();
		// InputMismatchException 발생
		
	}

}	




